There are many types of problems that are so computationally complex as to require hours of computation by one of the currently available personal computers or workstations in a network. One example of such a complex problem arises in the rendering of three-dimensional (3D) images, which may require many calculations to determine the lighting and color applied to each pixel in the rendered image. The complexity of the problem multiplies when producing an animation that requires a number of scenes to be rendered. Although a single computer can eventually carry out all of the calculations required to render a single image or even a plurality of images for an animation, it has been recognized that the task can be handled much more efficiently in a distributed processing environment in which the problem is divided into parts for solution by a plurality of computers. Typically, the computers used in a distributed processing environment are linked directly together, e.g., in a rack at one location, or alternatively (and perhaps more commonly), linked to one or more servers in a network--either local or wide area. It should be noted that the term "computer" as used herein is intended to include personal computers, portable computers, and workstations having a processing capability.
In a dedicated distributed processing environment, all of the plurality of computers linked together are normally available to share a problem solving task. However, it is often not practical to dedicate several computers to solving only distributed processing tasks. More commonly, the computers will be connected in a network and reside at different locations throughout an office or in different geographic locations. However, when the computers are used locally, they will not be available for use in solving a distributed processing problem. Furthermore, in most cases, not all of the computers connected in a network will have equivalent computational capabilities or access to the same software, and thus, will not all be usable in solving every type of complex problem.
Typically, it is necessary for someone to specifically create a list identifying the computers connected in a network that should be used in a distributed processing task. If any of the computers listed is in use by another party when a distributed processing task is to be initiated, the list must be modified. Since some of the computers that might be used are likely not in the same office area and thus not visible to the person making the list, it is not a trivial problem to determine which of the listed computers that might be used is actually available.
The list of computers that can participate in the distributed solution of a problem should be based upon the computers' known capabilities. While the amount of memory, type and speed of processor, size of hard drive, software installed or accessible, and other relevant parameters for each computer that might be used can be tabulated and considered when making a list of the computers that will participate in solving a problem, it is likely that such information will quickly become outdated as changes are made to computers connected to a network. If software necessary to solve a distributed processing problem that was once installed on a computer is deleted, it is inefficient to attempt to assign part of the distributed processing task to that computer, since that portion of the task assigned to it cannot be completed.
Thus, there are several problems that arise when using a plurality of computers to solve a task in a distributed processing environment, which have not been resolved in the prior art. Specifically, it would be preferable for a controlling computer that is initiating a distributed processing task to automatically determine which computers on a network are available for use. In addition, it would be desirable to automatically determine the capabilities of each available computer so that only those capable of solving the problem, and perhaps of those, only the best are selected to participate. A further advantage of automating these tasks is that the problem being solved can be scheduled when most of the computers on the network are otherwise inactive, such as during lunch or overnight. The distributed processing problem and the control of the tasking should optionally be initiated within an application from which the problem derives. For example, a 3D rendering program might include the option to initiate the distributed processing of a scene or animation rendering problem using available computers on a network. Key provisions in such a system would be identifying the computers that are not being used by other operators and determining the computational parameters of such computers.